package servlets;

import manejadores.ManejadorRecurso;
import manejadores.ManejadorTipoRecurso;
import manejadores.ManejadorSolicitudReserva;
import beans2.SolicitudReserva;
import beans2.TipoRecurso;
import beans2.Recurso;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import iteradores.*;
import dbUtil.*;
import reportes.*;
import beans.*;

/**
 *
 * @author Jose Dario Gimenez
 */
public class Servlet1 extends HttpServlet {

    private String nombreModulo = "solicitudreserva";

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        /*try
        {
        Class.forName("org.postgresql.Driver");
        }
        catch(ClassNotFoundException cnfe)
        {
        System.out.println("Error loading driver: " + cnfe);
        }
        Connection connection=null;
        
        try
        {
        connection=DriverManager.getConnection("jdbc:postgresql://localhost:5432/srr", "srr", "srradmin");
        }
        catch(SQLException e)
        {
        System.out.println("Error accediendo a la base de datos:" + e);
        }*/
        Connection connection = (Connection) request.getSession().getAttribute("ConexionBd");
        IteradorUsuario usuarioActual = (IteradorUsuario) request.getSession().getAttribute("usuarioActual");

        String url = "";
        String str_op = request.getParameter("accion");
        String op = request.getParameter("op");
        //Objeto que averigua si el usuario tiene permiso para acceder al servlet.
        PgAbm testPermiso = new PgAbm();
        testPermiso.setCon(connection);

        try {
            usuarioActual.getReset();
            usuarioActual.getNext();

           
            if (str_op.equalsIgnoreCase("report")) {
                
//                if (testPermiso.tienePermiso(nombreModulo,
//                        usuarioActual.getNombreusuario(),
//                        str_op.substring(0, 6))) {
//
//                    url = "/report.jsp?modo=REPORT";
//
//                    beans.TipoRecurso tiporecurso = new beans.TipoRecurso();
//                    tiporecurso.setCon(connection);
//                    tiporecurso.getTiposRecursos();
//
//                    IteradorTipoRecurso it = (IteradorTipoRecurso) tiporecurso.getIteratorAll();
//                    request.setAttribute("TiposRecurso", it);
//                    
//                    beans.Recurso recurso = new beans.Recurso();
//                    recurso.setCon(connection);
//                    recurso.getRecursos();
//
//                    IteradorRecurso it2 = (IteradorRecurso) recurso.getIteratorAll();
//                    request.setAttribute("Recursos", it2);
//
//
//                    if (op != null && op.equalsIgnoreCase("GENREPORT")) {
//                        url = generate_report(connection, request, response);
//                    }
//
//                    
//                } else {
//                    url = "sinpermiso.jsp";
//
//                }
                url = generate_report(connection, request, response);
                
                RequestDispatcher dispatcher = request.getRequestDispatcher(url);
                response.setCharacterEncoding("UTF-8");
                dispatcher.forward(request, response);
            }

            String accion = request.getParameter("accion");
            if (accion.equalsIgnoreCase("solicitudreserva")) {
                ManejadorRecurso manejadorRecurso = new ManejadorRecurso();
                manejadorRecurso.setConnection(connection);
                ManejadorTipoRecurso manejadorTipoRecurso = new ManejadorTipoRecurso();
                //manejadorTipoRecurso.setConection(connection);
                try {
                    manejadorRecurso.setCondition("");
                    manejadorTipoRecurso.setConditionTipoRecurso("");
                } catch (SQLException e) {
                    System.out.println("Error accediendo a la base de datos:" + e);
                }
                request.setAttribute("recurso", manejadorRecurso);
                request.setAttribute("tiporecurso", manejadorTipoRecurso);
                RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/solicitudreserva.jsp");
                dispatcher.forward(request, response);

            } else if (accion.equalsIgnoreCase("enviarSolicitudDeReserva")) {
                int idTipoRecurso = Integer.parseInt(request.getParameter("tipoRecurso"));
                String radio = request.getParameter("radio");
                String ubicacion = request.getParameter("ubicacion");
                String personaRetiro = "";
                if (!ubicacion.equalsIgnoreCase("")) {
                    personaRetiro = request.getParameter("personaRetiro");
                }
                String diaInicio = request.getParameter("diaInicio");
                String mesInicio = request.getParameter("mesInicio");
                String anioInicio = request.getParameter("anioInicio");
                String horaInicio = request.getParameter("horaInicio");
                String minutoInicio = request.getParameter("minutoInicio");
                String diaFin = request.getParameter("diaFin");
                String mesFin = request.getParameter("mesFin");
                String anioFin = request.getParameter("anioFin");
                String horaFin = request.getParameter("horaFin");
                String minutoFin = request.getParameter("minutoFin");
                String observacion = request.getParameter("observacion");
                SolicitudReserva solicitudReserva = new SolicitudReserva();
                TipoRecurso tipoRecurso = new TipoRecurso();
                tipoRecurso.setId(idTipoRecurso);
                solicitudReserva.setTipoRecurso(tipoRecurso);
                solicitudReserva.setUbicacion(ubicacion);
                solicitudReserva.setPersonaRetiro(personaRetiro);
                solicitudReserva.setFechainicio(diaInicio + "/" + mesInicio + "/" + anioInicio);
                solicitudReserva.setHorainicio(horaInicio + ":" + minutoInicio);
                solicitudReserva.setFechafinal(diaFin + "/" + mesFin + "/" + anioFin);
                solicitudReserva.setHorafinal(horaFin + ":" + minutoFin);
                solicitudReserva.setEstado("P");
                int recursoEspecifico = -1;
                if (radio.equalsIgnoreCase("recursoEspecifico")) {
                    recursoEspecifico = Integer.parseInt(request.getParameter("recursoEspecifico" + idTipoRecurso));
                } else {
                    String caracteristicasMinimas = request.getParameter("observacion2");
                    if (observacion.equalsIgnoreCase("")) {
                        observacion = caracteristicasMinimas;
                    } else {
                        observacion = observacion + "\n" + caracteristicasMinimas;
                    }
                }
                solicitudReserva.setObservacion(observacion);
                Recurso recurso = new Recurso();
                recurso.setId(recursoEspecifico);
                solicitudReserva.setRecurso(recurso);
                //solicitudReserva.setIdusuario("1");
                try {
                    
                    //solicitudReserva.setIdusuario(usuarioActual.getIdUsuario());
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                ManejadorSolicitudReserva manejadorSolicitudReserva = new ManejadorSolicitudReserva();
                manejadorSolicitudReserva.setConnection(connection);
                manejadorSolicitudReserva.setSolicitudReserva(solicitudReserva);

                try {
                    manejadorSolicitudReserva.store();
                } catch (SQLException e) {
                    System.out.println("Error accediendo a la base de datos:" + e);
                }

                RequestDispatcher dispatcher = request.getRequestDispatcher("/admin");
                response.setCharacterEncoding("UTF-8");
                dispatcher.forward(request, response);
            }
        } catch (Exception ex) {
            System.out.println("Error: " + ex.getMessage());
        }
    }

    public String generate_report(Connection con, HttpServletRequest request, HttpServletResponse response) throws Exception {
        String url = "/WEB-INF/solicitudreserva.jsp";

//        Listado jasper = new Listado(con);
//        jasper.runReporte("SolicitudesPorRecurso");

        return url;
    }
}
